// 导入数据库操作模块
const db = require('../db')
// 导入工具模块
const {dbQuery, getCurrentTime} = require('../utils')

// 获取文章分类列表的处理函数
exports.getArtCates = async (req, res) => {
    const list = await dbQuery('select * from ev_article_cate where is_delete=0 order by id desc')
    return res.sendJson('获取文章分类列表ok', 0, list)
}

// 新增文章分类的处理函数
exports.addArticleCates = async (req, res) => {
    const cate = await dbQuery('select * from ev_article_cate where name=? or alias=?', [req.body.name,req.body.alias])
    if (!cate){
        return res.sendJson('查询失败，请更换后重试！')
    }
    if (cate.length === 2){
        return res.sendJson('分类名称与分类别名被占用，请更换后重试！')
    }
    if (cate.length === 1){
        if (cate[0].name === req.body.name && cate[0].alias === req.body.alias){
            return res.sendJson('分类名称与分类别名被占用，请更换后重试！')
        }
        if (cate[0].name === req.body.name){
            return res.sendJson('分类名称被占用，请更换后重试！')
        }
        if (cate[0].alias === req.body.alias){
            return res.sendJson('分类别名被占用，请更换后重试！')
        }
    }
    // 定义插入文章分类的 SQL 语句
    const u = await dbQuery('insert into ev_article_cate set ?', {name: req.body.name, alias: req.body.alias})
    if (!u || u.affectedRows !== 1){
        return res.sendJson('新增文章分类失败，请更换后重试！')
    }
    res.sendJson('新增文章分类成功', 0)
}

// 删除文章分类的处理函数
exports.deleteCateById = async (req, res) => {
    // 定义标记删除的 SQL 语句
    const u = await dbQuery('update ev_article_cate set is_delete=1 where id=?', req.params.id)
    if (!u || u.affectedRows !== 1){
        return res.sendJson('删除文章分类失败，请更换后重试！')
    }
    res.sendJson('删删除文章分类成功', 0)
}

// 根据 Id 获取文章分类的处理函数
exports.getArtCateById = async (req, res) => {
    const info = await dbQuery('select * from ev_article_cate where id=?', req.params.id)
    if (!info || info.length === 0){
        return res.sendJson(req.params.id + ' 没有查询到数据，请确认', 0)
    }
    res.sendJson('根据 Id 获取文章分类的处理函数', 0, info[0])
}

// 根据 Id 更新文章分类的处理函数
exports.updateCateById = async (req, res) => {
    const cate = await dbQuery('select * from ev_article_cate where id<>? and (name=? or alias=?)', [req.body.id, req.body.name, req.body.alias])
    if (!cate){
        return res.sendJson('查询失败，请更换后重试！')
    }
    // 判断名称和别名被占用的4种情况
    if (cate.length === 2){
        return res.sendJson('分类名称与分类别名被占用，请更换后重试！')
    }
    if (cate.length === 1){
        if (cate[0].name === req.body.name && cate[0].alias === req.body.alias){
            return res.sendJson('分类名称与分类别名被占用，请更换后重试！')
        }
        if (cate[0].name === req.body.name){
            return res.sendJson('分类名称被占用，请更换后重试！')
        }
        if (cate[0].alias === req.body.alias){
            return res.sendJson('分类别名被占用，请更换后重试！')
        }
    }
    req.body['update_at'] = getCurrentTime()
    const id = req.body.id
    delete req.body['id']
    const u = await dbQuery('update ev_article_cate set ? where id=?', [req.body, id])
    if (!u || u.affectedRows !== 1){
        return res.sendJson('更新文章分类失败，请更换后重试！')
    }
    res.sendJson('更新文章分类成功', 0, req.body)
}
